home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / rexx / imc / rexx-imc.5 / rexx.summary < prev    next >
Encoding:
Text File  |  1993-06-25  |  11.9 KB  |  292 lines

  1.  
  2. The REXX Summary
  3.  
  4. Summary of the summary
  5.  
  6.  * Section 1: Differences from TRL [1]
  7.  * Section 2: Summary of expression syntax
  8.  * Section 3: Summary of instructions
  9.  * Section 4: Summary of builtin functions
  10.  
  11. [1] The Rexx Language, a practical approach to programming
  12.     M. F. Cowlishaw
  13.     Englewood Cliffs 1985
  14.  
  15. 1 Differences from TRL
  16.  
  17. The following are all nonstandard features of REXX-imc
  18.  
  19.  * Rejection of labels ending with dot (in case of confusion between
  20.    function.(args) and stem.(tail))
  21.  * Compound variable accesses of the form "stem.'string constant'" and
  22.    stem.(expression)
  23.  * Acceptance of any non-zero number for logical truth, rather than just 1
  24.  * "SAYN expression" to output lines without carriage return
  25.  * "SELECT expression" to switch on a value
  26.  * "END SELECT"
  27.  * "PARSE VALUE" with multiple strings separated by commas
  28.  * "PROCEDURE HIDE"
  29.  * The following functions: chdir getcwd getenv unixerror putenv system userid
  30.    plus these I/O functions: open close fdopen popen pclose fileno ftell
  31.  * error messages 80-210, -1 and -3.
  32.  
  33. 2 Summary of expression syntax
  34.  
  35. Strings:          "String constants" 'enclosed in quotes'
  36. Hex strings:      '616263 64'x
  37. Numbers:          123.4e-56
  38. Constant symbols: .abc 1d4 7!
  39. Simple symbols:   foo bar xyz3
  40. Stems:            array.
  41. Compound symbols: c.3 element.bar.45
  42. Operators:        arithmetic: + - * / ** (to-power) % (div) // (mod)
  43.                   string:     [abuttal] [space] || (concatenation)
  44.           logical:    \ (not) & (and) | (or) && (xor)
  45.           comparison: = > < <> <= >= \> \< \=
  46.                       == >> << <<= >>= \>> \<< \== (strong comparison)
  47. Function calls:   fn(1,2,3)    bar(,5)  'DATE'()
  48.  
  49. 3 Summary of instructions
  50.  
  51. /* this is a comment */
  52.  
  53. expression                     - execute a host command
  54.  
  55. symbol=value                   - assignment
  56.  
  57. ADDRESS [VALUE] [environment]  - change the current environment
  58. ADDRESS environment command    - execute a command in an environment
  59.  
  60. CALL name [arg][,[arg],...]]   - call a function or subroutine
  61. CALL ON condition [NAME symbol]- turn on condition handling
  62. CALL OFF condition             - turn off condition handling
  63.  
  64.     condition = ERROR | FAILURE | NOTREADY | HALT
  65.  
  66. DO [ symbol=start   [TO  finish]  ]     [WHILE expression_w]
  67.    [                [BY  step  ]  ]
  68.    [                [FOR count ]  ]     [UNTIL expression_u]
  69.  
  70.    [ expression_c                 ]     [FOREVER           ]
  71.  
  72.                                - block or repetitive block instruction
  73.  
  74. DROP symbol [symbol...]        - de-assignment
  75.  
  76. END [symbol]                   - end block or repetitive block instruction
  77.  
  78. EXIT [expression]              - exit program or external function
  79.  
  80. IF expression [;] THEN [;] statement [ ; ELSE [;] statement]
  81.                                - conditional instruction
  82.  
  83. INTERPRET expression           - dynamically execute a string
  84.  
  85. ITERATE [symbol]               - continue repetitive block
  86.  
  87. LEAVE [symbol]                 - leave repetitive block
  88.  
  89. NOP                            - do nothing
  90.  
  91. NUMERIC DIGITS n               - set parameters for numeric formatting
  92. NUMERIC FUZZ n
  93. NUMERIC FORM   SCIENTIFIC
  94.              | ENGINEERING
  95.              | "string constant"
  96.              | [VALUE] expression
  97.  
  98. [PARSE [UPPER]] ARG template   
  99. [PARSE [UPPER]] PULL [template]
  100. PARSE [UPPER] LINEIN [template]
  101. PARSE [UPPER] SOURCE template
  102. PARSE [UPPER] VERSION template
  103. PARSE [UPPER] NUMERIC template
  104. PARSE [UPPER] VAR symbol template
  105. PARSE [UPPER] VALUE expression WITH template
  106.  
  107.     template        -> [firstPosition] assignments [assignments]
  108.     assignments     -> [nextPosition] varlist [stopPosition]
  109.     varlist         -> varname ' ' [varlist]
  110.     varname         ->   "non-constant symbol"
  111.                        | '.'
  112.     firstPosition   -> position
  113.     nextPosition    -> position [nextPosition]
  114.     stopPosition    -> position
  115.     position        ->   searchPosition
  116.                        | absPosition
  117.                        | relPosition
  118.                        | '(' "expression" ')'
  119.     searchPosition  -> "string constant"
  120.     absPosition     ->   "integer"
  121.                        | '=' numexpr
  122.     relPosition     ->   '+' numexpr
  123.                        | '-' numexpr
  124.     numexpr         ->   "integer"
  125.                        | '(' "integer expression" ')'
  126.  
  127. PROCEDURE                      - hide the caller's symbols
  128. PROCEDURE EXPOSE var1 [var2...]
  129. PROCEDURE HIDE var1 [var2...]
  130.  
  131. PUSH  expression               - stack a value in LIFO order
  132. QUEUE expression               - stack a value in FIFO order
  133.  
  134. RETURN [value]                 - return from a function or subroutine
  135.  
  136. SAY [expression]               - echo data
  137. SAYN expression                - echo data without newline
  138.  
  139. SELECT [expression]
  140.    WHEN expression THEN statements
  141.    WHEN expression THEN statements
  142.    ...
  143.    [OTHERWISE statements]
  144. END [SELECT]                   - switch on a list of conditions
  145.  
  146. SIGNAL [VALUE] name            - jump to a label
  147. SIGNAL ON condition [NAME symbol] - turn on condition handling
  148. SIGNAL OFF condition              - turn off condition handling
  149.  
  150.     condition = ERROR | FAILURE | NOTREADY | HALT | SYNTAX | NOVALUE
  151.  
  152. TRACE symbol                   - control program tracing. Values are:
  153. TRACE "string"                   A (all clauses) C (commands) E (error)
  154. TRACE VALUE expression           F (failure) I (intermediate values)
  155.                                  L (labels) N (normal, =F) O (off) 
  156.                                  R (results)
  157.  
  158.  
  159. 4 Summary of builtin functions
  160.  
  161. Standard functions
  162.  
  163. ABBREV(information,info[,length])  - check for valid abbreviations
  164. ABS(number)                        - return the absolute value
  165. ADDRESS()                          - return the current environment
  166. ARG([n][,opt])                     - return or test an argument
  167. BITAND(string1,string2[,pad])
  168. BITOR (string1,string2[,pad])      - combine two strings with bit operations
  169. BITXOR(string1,string2[,pad])
  170. B2D(binary)
  171. B2X(binary)
  172. D2B(decimal)
  173. C2X(string)
  174. C2D(string[,n])
  175. D2C(decimal[,n])                   - convert between data formats
  176. D2X(decimal[,n])
  177. X2B(hex)
  178. X2C(hex)
  179. X2D(hex)
  180. CENTER(s,n[,pad])                  - centre a string in a field
  181. CENTRE(s,n[,pad])
  182. COMPARE(s1,s2[,pad])               - compare two strings
  183. CONDITION([option])                - return information about trapped condition
  184.                                      Option can be (default I):
  185.                    C (condition name) D (description)
  186.                    I (instruction)    S (status)
  187.                    
  188. COPIES(s,n)                        - replicate a string
  189. DATATYPE(string[,type])            - test datatype. Type can be:
  190.                                    A (alphanumeric) B (bits) L (lowercase)
  191.                                    M (mixed case) N (number) S (symbol chars)
  192.                                    U (upper case) W (whole number) X (hex)
  193.  
  194. DATE([format])                     - get date. Format can be:
  195.                                    B (base date - days since 1/1/1 AD)
  196.                    C (days in century) D (days in year)
  197.                    E (European) J (Julian) M (month name)
  198.                    N (normal: dd Mon yyyy) O (ordered)
  199.                    S (sorted) U (USA) W (day of week)
  200.                    
  201. DELSTR(string,n[,length])          - delete substring
  202. DELWORD(string,n[,length])         - delete words
  203. DIGITS()                           - NUMERIC DIGITS setting
  204. ERRORTEXT(i)                       - Rexx error message
  205. FORM()                             - NUMERIC FORM setting
  206.  
  207. FORMAT(number [,[before] [,[after] [,[expp] [,expt]]]] )
  208.                                    - format a number as specified
  209. FUZZ()                             - NUMERIC FUZZ setting
  210. INSERT(new,target[,[n][,[length][,pad]]])  - insert new string into target
  211. JUSTIFY(s,n[,pad])                 - justify text to given width
  212. LASTPOS(needle,haystack[,start])   - find last occurrence of a string
  213. LEFT(string,num[,pad])             - return an initial substring
  214. LENGTH(string)                     - find the length of a string
  215. LINESIZE()                         - find the terminal width
  216. MAX(number[,number...])            - find the maximum of a set
  217. MIN(number[,number...])            - find the minimum of a set
  218. OVERLAY(new,target[,[n][,[length][,pad]]])  - overlay new string on to target
  219. POS(needle,haystack[,start])       - find the first occurance of a string
  220. QUEUED()                           - return the number of items on the stack
  221. RANDOM([min][,[max][,seed]])       - return a random number
  222. REVERSE(string)                    - find the reverse of a string
  223. RIGHT(string,num[,pad])            - return a final substring
  224. SOURCELINE([i])                    - return a line of the source program
  225. SPACE(s[,[n][,pad]])               - evenly space words in a sentence
  226. STRIP(string[,[opt][,char]])       - remove leading/trailing spaces
  227. SUBSTR(string,n[,length[,pad]])    - return a substring
  228. SUBWORD(string,n[,k])              - return a substring of words
  229. SYMBOL(name)                       - test to see if a symbol is defined
  230. TIME([format])                     - get the time. Format can be:
  231.                                    C (civil time) N (normal) L (long)
  232.                    H (hours since midnight)
  233.                    M (minutes since midnight)
  234.                    S (seconds since midnight) E (elapsed time)
  235.                    R (elapsed time then reset)
  236.                    
  237. TRACE([setting])                   - get and/or set trace mode (see trace
  238.                                      instruction)
  239.                      
  240. TRANSLATE(string[,[tableo][,[tablei][,pad]]])
  241.                                    - translate characters using given tables
  242. TRUNC(number[,n])                  - truncate floating point number
  243. VALUE(s[,[newvalue][,selector]])   - get or set value of a symbol
  244.  
  245. VERIFY(string,reference[,[option][,start]])
  246.                                    - verify string for valid characters
  247. WORD(string,n)                     - return a word from a string
  248. WORDINDEX(string,n)                - return the position of a word in a string
  249. WORDLENGTH(string,n)               - return the length of a word in a string
  250. WORDPOS(phrase,string[,start])     - find a phrase in a string 
  251. WORDS(string)                      - return the number of words in a string
  252. XRANGE([a[,b]])                    - return a range of characters
  253.  
  254. I/O functions (some of which are UNIX-specific)
  255.  
  256. CHARIN([stream] [,[position] [,count]])  - read characters
  257. CHAROUT([stream] [,[string] [,position] ]- write characters
  258. CHARS([stream])                          - number of characters available
  259. CLOSE(stream)                            - close a stream
  260. FDOPEN(fd [,[mode] [,stream]])           - open an fd number
  261. FILENO(stream)                           - find an fd number
  262. FTELL(stream)                            - return the current file pointer
  263. LINEIN([stream] [,[line] [,count]])      - read a line
  264. LINEOUT([stream] [,[string] [,line]])    - write a line
  265. LINES([stream])                          - determine whether lines may be read
  266. OPEN(file [,[mode] [,stream]])           - open a file
  267. PCLOSE(stream)                           - close a pipe
  268. POPEN(command [,[mode] [,stream]])       - open a pipe to a shell command
  269. STREAM(stream [,[option] [,command]])    - miscellaneous stream operations
  270.  
  271. UNIX-specific functions
  272.  
  273. CHDIR(directory)                   - change to new directory
  274. GETCWD()                           - return current working directory
  275. GETENV(name)                       - get an environment variable
  276. PUTENV(string)                     - set an environment variable
  277. SYSTEM(s)                          - return the output of a shell command
  278. USERID()                           - return the process owner's login name
  279.  
  280. Mathematical functions (implemented as separate package)
  281.  
  282. ACOS(x)      the arc-cosine of x in radians (0<=acs(x)<=pi)
  283. ASIN(x)      the arc-sine of x in radians (-pi/2<=asn(x)<=pi/2)
  284. ATAN(x)      the arc-tangent of x in radians (-pi/2<=atn(x)<=pi/2)
  285. COS(x)       the cosine of x radians
  286. EXP(x)       the exponential of x (2.718281... to the power x)
  287. LN(x)        the natural logarithm of x (x>0)
  288. SIN(x)       the sine of x radians
  289. SQRT(x)      the square root of x (x>=0) [arbitrary precision possible]
  290. TAN(x)       the tangent of x radians (x <> pi/2)
  291. TOPOWER(x,y) x to the power y
  292.